#encoding=utf8
"""
this is a example shows train model using a corpus, and test a sample in str
modefied by shoubin@iscas.ac.cn 2018-06-02
"""
import sys, os
sys.path.append(os.path.join(os.getcwd(), '../'))

from pymining.math.matrix import Matrix
from pymining.math.text2matrix import Text2Matrix
from pymining.nlp.segmenter import Segmenter
from pymining.common.global_info import GlobalInfo
from pymining.common.configuration import Configuration
from pymining.preprocessor.chisquare_filter import ChiSquareFilter
from pymining.classifier.naive_bayes import NaiveBayes

if __name__ == "__main__":
    #两个文件换成自己磁盘路径的文件
    train_data_file = "/Users/vizvi/lee/itechs/project/python/datamining/classify/pymining/example/data/news_data_train.txt"
    test_data_file = "/Users/vizvi/lee/itechs/project/python/datamining/classify/pymining/example/data/news_data_test.txt"
    config = Configuration.FromFile("conf/test.xml")
    GlobalInfo.Init(config, "__global__")
    txt2mat = Text2Matrix(config, "__matrix__")
    [trainx, trainy] = txt2mat.CreateTrainMatrix(train_data_file)
    chiFilter = ChiSquareFilter(config, "__filter__")
    chiFilter.TrainFilter(trainx, trainy)

    #采用朴素贝叶斯分类器
    nbModel = NaiveBayes(config, "naive_bayes")
    #开始训练
    nbModel.Train(trainx, trainy)

    #预测
    #inputStr = "5月30日，全球访问量最大的汽车网站“汽车之家”正式发布《2017乘用车新车质量报告》，大国品牌众泰汽车以超越行业平均值的明显优势，高居中国品牌新车质量排行第五名，并入围行业总体新车质量表现（包括自主、合资与进口品牌）前35强，是为数不多同时入围两大质量榜单的中国品牌之一。"
    #inputStr = "6月2日，中国人民解放军军事科学院副院长何雷中将在回应美国国防部长马蒂斯演讲中提及所谓“南海军事化”的问题时表示，中国的南海诸岛及其岛礁附近的海域，是中国的固有领土，是有历史依据和国际法认可的，是不容争辩的"
    inputStr = "教育方式和理念的不同，造就了内心不一样的孩子，在不同的教育体制之下，中美孩子的世界观大不相同，他们对待社会的态度也迥然相异。下面，让我们一起来看三个美国小女孩的故事，相较于中国孩子的“按部就班”，美国家长们乐于“纵容”孩子们的梦想，从她们的身上，我们也能看到中国教育离真正地培养人才，还差得很远。"
    [cols, vals] = txt2mat.CreatePredictSample(inputStr.decode("utf-8"))
    [cols, vals] = chiFilter.SampleFilter(cols, vals)
    probTuple = nbModel.TestSample(cols, vals)

    #按照预测分数，降序排列
    probTuple = list(probTuple)
    probTuple = sorted(probTuple, key=lambda t: t[1], reverse=True)

    dirNameDict = { \
        "C000007": 0, \
        "C000008": 1, \
        "C000010": 2, \
        "C000013": 3, \
        "C000014": 4, \
        "C000016": 5, \
        "C000020": 6, \
        "C000022": 7, \
        "C000023": 8, \
        "C000024": 9, \
        }

    objectMap = (\
        ('C000007'  ,"汽车"),\
        ('C000008'  ,'财经'),\
        ('C000010'	,'IT'), \
        ('C000013'	,'健康'),\
        ('C000014'	,'体育'),\
        ('C000016'	,'旅游'),\
        ('C000020'	,'教育'),\
        ('C000022'	,'招聘'),\
        ('C000023'	,'文化'),\
        ('C000024'	,'军事'),\
        )
    #print(probTuple)
    for pro in probTuple:
        print  pro
    print "-------------------"
    bestMatch=probTuple[0][0]
    print "best match : ", bestMatch,objectMap[bestMatch][0],objectMap[bestMatch][1], probTuple[0][1]
